home *** CD-ROM | disk | FTP | other *** search
/ Aminet 12 / Aminet 12 (1996)(GTI - Schatztruhe)[!][Jun 1996].iso / Aminet / dev / e / framework.lha / fw / wbMessagePort.e < prev    next >
Encoding:
Text File  |  1996-01-28  |  1.3 KB  |  62 lines

  1.  
  2. -> wbMessagePort is an abstraction of exec message ports.
  3.  
  4. -> Copyright © Guichard Damien 01/04/1996
  5.  
  6. OPT MODULE
  7. OPT EXPORT
  8.  
  9. MODULE 'exec/ports'
  10. MODULE 'fw/wbObject'
  11.  
  12. OBJECT wbMessagePort OF wbObject
  13.   port:PTR TO mp
  14. ENDOBJECT
  15.  
  16. -> Exec signal associated with this WB object.
  17. PROC signal() OF wbMessagePort
  18. ENDPROC IF self.port THEN self.port.sigbit ELSE -1
  19.  
  20. -> Perform the appropriate action when a message is received.
  21. PROC handleActivation() OF wbMessagePort
  22.   DEF result=PASS,msg
  23.   WHILE msg:=GetMsg(self.port)
  24.     result:=self.handleMessage(msg)
  25.     IF result=PASS THEN ReplyMsg(msg)
  26.     EXIT result>CONTINUE
  27.   ENDWHILE
  28. ENDPROC result
  29.  
  30. -> Handle the receipt of a message at the object's MsgPort.
  31. PROC handleMessage(msg) OF wbMessagePort IS STOPALL
  32.  
  33. -> Creates a MsgPort and attaches it to the object.
  34. -> Return FALSE if failed.
  35. PROC makePort() OF wbMessagePort
  36.   self.port:=CreateMsgPort()
  37. ENDPROC self.port<>NIL
  38.  
  39. -> Flush all pending messages at the object's MsgPort.
  40. PROC flushPort() OF wbMessagePort
  41.   DEF msg
  42.   Forbid()
  43.   WHILE msg:=GetMsg(self.port)
  44.     ReplyMsg(msg)
  45.   ENDWHILE
  46.   Permit()
  47. ENDPROC
  48.  
  49. -> Deletes the MsgPort attached to the object.
  50. PROC deletePort() OF wbMessagePort
  51.   DEF msg
  52.   Forbid()
  53.   self.flushPort()
  54.   DeleteMsgPort(self.port)
  55.   Permit()
  56.   self.port:=NIL
  57. ENDPROC
  58.  
  59. -> Remove the port.
  60. PROC remove() OF wbMessagePort IS self.deletePort()
  61.  
  62.